'use strict';
/**
 * 创建用户: 张少辉
 * 创建时间: 2015-11-20 15:10:01
 * 创建原因: 用于封装页面token
 */
angular.module('nec-admin.common')
    .value('TOKEN_NAME', 'token') //存储token名字
    .provider('tokenService', function(storageServiceProvider) {
        var tokenPrefix = 'Basic '; //token 前缀

        /**
         * 设置token的存储类型，类型参考storageService的STORAGE_TYPES
         * @param {[STORAGE_TYPES]} type 存储类型
         */
        this.setTokenServiceType = function(type) {
            storageServiceProvider.setStorageType(type);
        };

        /**
         * 设置token前缀
         * @param {[String]} prefix 前缀
         */
        this.setTokenPrefix = function(prefix) {
            tokenPrefix = prefix;
        };

        this.$get = ['storageService', 'TOKEN_NAME',
            function(storage, TOKEN_NAME) {
                var tokenService;
                if (typeof storage === 'function') {
                    tokenService = storage('tokenService');
                } else {
                    tokenService = storage;
                }

                /**
                 * 生成token
                 * @param  {[String]} username 用户名
                 * @param  {[String]} password 密码
                 * @return {[String]}         token
                 */
                function generateToken(username, password) {
                    return tokenPrefix + btoa(username + ':' + password);
                }
                return {
                    getToken: function() {
                        return tokenService.get(TOKEN_NAME);
                    },
                    setToken: function(username, password) {
                        tokenService.put(TOKEN_NAME, generateToken(username, password));
                    },
                    clearToken: function() {
                        tokenService.remove(TOKEN_NAME);
                    }
                };
            }
        ];
    });
